//
// Created by rengen.gong on 2021/12/21.
//

#ifndef LEARN1_METHODTEMPLATE_H
#define LEARN1_METHODTEMPLATE_H

#include "iInvoke.h"
#include "stdlib.h"

using namespace std;

template<class T>
T compareMax(T t1, T t2) {
    return t1 > t2 ? t1 : t2;
}


template <>
const char *compareMax<const char *>(const char *s1, const char *s2) {
    std::cout << "[for debug]" << " call compareMax template" << endl;
    return strcmp(s1, s2) >= 0 ? s1 : s2;
}

class MethodTemplate :
        public virtual iInvoke {

public:
    void invoke() override {
        iInvoke::invoke();
        cout << compareMax(1, 2) << endl;
        cout << compareMax("asda", "qweq") << endl;

    }

};

#endif //LEARN1_METHODTEMPLATE_H
